#include <iostream>
#include <sys/socket.h>
#include <netdb.h>
#include <cstdio>
#include <unistd.h>
#include <cstdlib>
#include <arpa/inet.h>
#include <cstring>

class Tcpserver
{
private:
    /* data */
public:

    int serverfd;  // 服务端监听的socket
    int clientfd;  // 客户端连接的socket
    std::string clientIp;  // 客户端ip
    unsigned short port;

    Tcpserver();

    // 初始化服务器用于监听的socket
    bool initServer(const unsigned short & port);

    // 受理客户端的连接(从已连接的客户端中取出一个客户端)
    // 如果没有已连接的客户端，accpet函数将阻塞等待
    bool accept();

    bool send(const std::string & buffer);

    bool recv(std::string & buffer, const size_t maxLen);

    bool closeServerFD();

    bool closeClientFD();

    ~Tcpserver();
};



